package com.scr1pt.extension

import com.alibaba.fastjson.JSON
import com.alibaba.fastjson.JSONArray
import com.alibaba.fastjson.JSONObject
import kotlin.reflect.KClass

/**
 * 说明: Any类的对象的扩展方法
 *
 * 创建者: tum0r
 *
 * 时间: 2021/9/15 21:18
 */

/**
 * 是否是Java Class或Kotlin Class
 */
fun Any.isClass(): Boolean = this is Class<*> || this is KClass<*>

/**
 * 是否是Class
 */
fun Any.isJavaClass(): Boolean = this is Class<*>

/**
 * 是否是Class
 */
fun Any.isKotlinClass(): Boolean = this is KClass<*>

/**
 * 对象是否是集合类型
 */
fun Any.isCollection(): Boolean = this is Collection<*>

/**
 * 对象是否是枚举类型
 */
fun Any.isEnum(): Boolean = this::class.java.isEnum

/**
 * 对象是否是数组类型
 */
fun Any.isArray(): Boolean = this::class.java.isArray

/**
 * 对象是否是基本类型（包含String）类型
 */
fun Any.isPrimitiveType(): Boolean = this::class.java.isPrimitiveType()

/**
 * 对象转JSON字符串
 */
fun Any?.toJSONString(): String = JSON.toJSONString(this)

/**
 * 对象转JSONObject
 */
fun Any?.toJSONObject(): JSONObject = JSONObject.parseObject(this.toJSONString())

/**
 * 对象转JSONArray
 */
fun Any?.toJSONArray(): JSONArray = JSON.parseArray(this.toJSONString())
